package com.itlong.cloud.operate.service;

import com.itlong.cloud.POJO.DTO.operate.OperateAdInfoGetPageDTO;
import com.itlong.cloud.POJO.DTO.operate.OperateSaveAdInfoDTO;
import com.itlong.cloud.POJO.DTO.operate.OperateUpdateAdInfoDTO;
import com.itlong.cloud.POJO.VO.operate.OperateAdGetOneVO;
import com.itlong.cloud.POJO.VO.operate.OperateAdImgVO;
import com.itlong.cloud.POJO.VO.operate.OperateAdVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;

/**
 * <desc>
 * 运营-运营管理-广告管理接口。
 * <desc/>
 *
 * @createDate 2017/10/10.
 */
public interface IOperateAdManageService {

    /**
     * <desc>
     * 保存广告信息。
     * <desc/>
     *
     * @param saveDTO 请求广告参数
     * @return
     * @author shengen.T
     * @createDate 2017/10/10
     */
    Integer saveAdInfo(OperateSaveAdInfoDTO saveDTO) throws Exception;

    /**
     * <desc>
     * 修改广告信息。
     * <desc/>
     *
     * @param updateDTO 请求广告参数
     * @return
     * @author shengen.T
     * @createDate 2017/10/10
     */
    Integer updateAdInfo(OperateUpdateAdInfoDTO updateDTO) throws Exception;

    /**
     * <desc>
     * 批量发布广告。
     * <desc/>
     *
     * @param adIds 广告ID列表
     * @return
     * @author shengen.T
     * @createDate 2017/10/10
     */
    Integer publishAd(String adIds) throws Exception;

    /**
     * <desc>
     * 批量删除广告。
     * <desc/>
     *
     * @param adIds 广告ID列表
     * @return
     * @author shengen.T
     * @createDate 2017/10/10
     */
    Integer deleteAd(String adIds) throws Exception;

    /**
     * <desc>
     * 设置广告状态。
     * <desc/>
     *
     * @param * @param null
     * @return
     * @author shengen.T
     * @createDate 2017/10/10
     */
    Integer setAdStatus(String adId, Integer status) throws Exception;

    /**
     * <desc>
     * 根据广告ID获取广告详细信息。
     * <desc/>
     *
     * @param adId 广告ID
     * @return
     * @author shengen.T
     * @createDate 2017/10/10
     */
    OperateAdGetOneVO getAdInfo(String adId) throws Exception;

    /**
     * <desc>
     * 获取广告消息分页列表。
     * <desc/>
     *
     * @param pageDTO 请求参数
     * @return
     * @author shengen.T
     * @createDate 2017/10/10
     */
    Page<OperateAdVO> getAdInfoPage(OperateAdInfoGetPageDTO pageDTO) throws Exception;

    /**
     * <desc>
     * 获取最新广告Banner图片列表
     * <desc/>
     *
     * @param projectId       项目id
     * @param type            广告类型（1主页，2服务页，3物业服务页）
     * @param publishPlatform 发布平台（1APP，2小程序）
     * @return
     * @author Chunjian.G
     * @createDate 2017-11-08
     */
    List<OperateAdImgVO> getBannerImgs(String projectId, Integer type, Integer publishPlatform) throws Exception;

    /**
     * <desc>
     * 检测过期广告并将发布状态置为过期。
     * <desc/>
     *
     * @param
     * @return
     * @author shengen.T
     * @createDate 2017/11/24
     */
    boolean changePublishStateTimeTask() throws Exception;

    /**
     * <desc>
     * 广告审核通过
     * </desc>
     *
     * @param operateAdInfoGetPageDTO 参数DTO
     * @return
     * @Author Zhu.yj
     * @createDate 2020/12/24
     */
    Integer audit(OperateAdInfoGetPageDTO operateAdInfoGetPageDTO) throws Exception;
}
